package com.bruce.demo2.patterns.demo1.creational.demo01.singleton.demo07;

import java.io.Serializable;

/**
 * @PROJECT_NAME design_patterns
 * @DESCRIPTION 懒汉模式：静态内部类实现单例模式
 * 静态内部类单例模式中实例由内部类创建，由于JVM在加载外部类的过程中，是不会加载静态内部类的，只有内部类的属性/方法被调用时才会被加载，
 * 并初始化其静态属性，静态内部类由于被static修饰，保证只被实例化一次，并且严格保证实例化顺序，
 * <p>
 * 静态内部类是一种优秀的单例模式，是开源项目中比较常见的一种单例模式，在没有任何加锁的情况下，保证了多线程下的安全，并且没有任何性能影响和空间的浪费。
 * @AUTHOR CNBruceLee
 * @DATE 2021/7/2 20:44
 */
public class Singleton implements Serializable {
    //1、私有化构造方法
    private Singleton() {
    }

    //2、内部
    private static class SingletonInner {
        private static final Singleton INSTANCE = new Singleton();
    }

    //3、对外提供静态方法获取该对象
    public static Singleton getInstance() {
        return SingletonInner.INSTANCE;
    }
}
